/**
 * 
 */
package com.roshan.web.dto;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * This contains details of the retrieve user response.
 * 
 * @author roshan
 */
public class UserDetail implements Serializable {

    /**
     * The Constant serialVersionUID.
     */
    private static final long serialVersionUID = 100L;

    /**
     * The status.
     */
    private WSCommunicationStatus status;

    /** The username. */
    private String username;

    /**
     * The first name.
     */
    private String firstName;

    /**
     * The last name.
     */
    private String lastName;

    /**
     * The email address.
     */
    private String emailAddress;

    /**
     * The address1.
     */
    private String address1;

    /**
     * The address2.
     */
    private String address2;

    /**
     * The city.
     */
    private String city;

    /**
     * The state.
     */
    private String state;

    /**
     * The zip code.
     */
    private String zipCode;

    /**
     * The country.
     */
    private String country;

    /**
     * The mobile number.
     */
    private String mobileNumber;

    /**
     * The user uri.
     */
    private String userUri;

    /**
     * The tenant profile uri.
     */
    private String tenantProfileUri;

    /**
     * The partner profile uri.
     */
    private String partnerProfileUri;

    /**
     * The device types.
     */
    private List<String> deviceTypes;

    /**
     * The tenant name.
     */
    private String tenantName;

    /**
     * Gets the tenant name.
     * 
     * @return the tenantName
     */
    public String getTenantName() {
        return this.tenantName;
    }

    /**
     * Sets the tenant name.
     * 
     * @param tenantName the tenantName to set
     */
    public void setTenantName(String tenantName) {
        this.tenantName = tenantName;
    }

    /**
     * Gets the status.
     * 
     * @return the status
     */
    public WSCommunicationStatus getStatus() {
        return this.status;
    }

    /**
     * Sets the status.
     * 
     * @param status the status to set
     */
    public void setStatus(WSCommunicationStatus status) {
        this.status = status;
    }

    /**
     * Gets the first name.
     * 
     * @return the firstName
     */
    public String getFirstName() {
        return this.firstName;
    }

    /**
     * Sets the first name.
     * 
     * @param firstName the firstName to set
     */
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    /**
     * Gets the last name.
     * 
     * @return the lastName
     */
    public String getLastName() {
        return this.lastName;
    }

    /**
     * Sets the last name.
     * 
     * @param lastName the lastName to set
     */
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    /**
     * Gets the email address.
     * 
     * @return the emailAddress
     */
    public String getEmailAddress() {
        return this.emailAddress;
    }

    /**
     * Sets the email address.
     * 
     * @param emailAddress the emailAddress to set
     */
    public void setEmailAddress(String emailAddress) {
        this.emailAddress = emailAddress;
    }

    /**
     * Gets the address1.
     * 
     * @return the address1
     */
    public String getAddress1() {
        return this.address1;
    }

    /**
     * Sets the address1.
     * 
     * @param address1 the address1 to set
     */
    public void setAddress1(String address1) {
        this.address1 = address1;
    }

    /**
     * Gets the address2.
     * 
     * @return the address2
     */
    public String getAddress2() {
        return this.address2;
    }

    /**
     * Sets the address2.
     * 
     * @param address2 the address2 to set
     */
    public void setAddress2(String address2) {
        this.address2 = address2;
    }

    /**
     * Gets the city.
     * 
     * @return the city
     */
    public String getCity() {
        return this.city;
    }

    /**
     * Sets the city.
     * 
     * @param city the city to set
     */
    public void setCity(String city) {
        this.city = city;
    }

    /**
     * Gets the state.
     * 
     * @return the state
     */
    public String getState() {
        return this.state;
    }

    /**
     * Sets the state.
     * 
     * @param state the state to set
     */
    public void setState(String state) {
        this.state = state;
    }

    /**
     * Gets the zip code.
     * 
     * @return the zipCode
     */
    public String getZipCode() {
        return this.zipCode;
    }

    /**
     * Sets the zip code.
     * 
     * @param zipCode the zipCode to set
     */
    public void setZipCode(String zipCode) {
        this.zipCode = zipCode;
    }

    /**
     * Gets the country.
     * 
     * @return the country
     */
    public String getCountry() {
        return this.country;
    }

    /**
     * Sets the country.
     * 
     * @param country the country to set
     */
    public void setCountry(String country) {
        this.country = country;
    }

    /**
     * Gets the mobile number.
     * 
     * @return the mobileNumber
     */
    public String getMobileNumber() {
        return this.mobileNumber;
    }

    /**
     * Sets the mobile number.
     * 
     * @param mobileNumber the mobileNumber to set
     */
    public void setMobileNumber(String mobileNumber) {
        this.mobileNumber = mobileNumber;
    }

    /**
     * Sets the tenant profile uri.
     * 
     * @param tenantProfileUri the new tenant profile uri
     */
    public void setTenantProfileUri(String tenantProfileUri) {
        this.tenantProfileUri = tenantProfileUri;
    }

    /**
     * Gets the partner profile uri.
     * 
     * @return the partner profile uri
     */
    public String getPartnerProfileUri() {
        return this.partnerProfileUri;
    }

    /**
     * Sets the partner profile uri.
     * 
     * @param partnerProfileUri the new partner profile uri
     */
    public void setPartnerProfileUri(String partnerProfileUri) {
        this.partnerProfileUri = partnerProfileUri;
    }

    /**
     * Gets the device types.
     * 
     * @return the device types
     */
    public List<String> getDeviceTypes() {
        return this.deviceTypes;
    }

    /**
     * Sets the device types.
     * 
     * @param deviceTypeUris the new device types
     */
    public void setDeviceTypes(List<DeviceTypeUris> deviceTypeUris) {

        if (deviceTypeUris != null) {
            List<String> deviceTypeUriList = new ArrayList<String>();
            for (DeviceTypeUris deviceTypeUri : deviceTypeUris) {
                deviceTypeUriList.add(deviceTypeUri.getDeviceTypeUri());
            }

            this.deviceTypes = deviceTypeUriList;
        }
    }

    /**
     * Gets the user uri.
     * 
     * @return the user uri
     */
    public String getUserUri() {
        return this.userUri;
    }

    /**
     * Sets the user uri.
     * 
     * @param userUri the new user uri
     */
    public void setUserUri(String userUri) {
        this.userUri = userUri;
    }

    /**
     * Gets the tenant profile uri.
     * 
     * @return the tenant profile uri
     */
    public String getTenantProfileUri() {
        return this.tenantProfileUri;
    }

    /**
     * Gets the username.
     * 
     * @return the username
     */
    public String getUsername() {
        return this.username;
    }

    /**
     * Sets the username.
     * 
     * @param username the username to set
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /*
     * (non-Javadoc)
     * 
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return "UserDetail [status=" + status + ", firstName=" + firstName + ", lastName=" + lastName
                + ", emailAddress=" + emailAddress + ", address1=" + address1 + ", address2=" + address2 + ", city="
                + city + ", state=" + state + ", zipCode=" + zipCode + ", country=" + country + ", mobileNumber="
                + mobileNumber + ", userUri=" + userUri + ", tenantProfileUri=" + tenantProfileUri
                + ", partnerProfileUri=" + partnerProfileUri + ", deviceTypes=" + deviceTypes + ", tenantName="
                + tenantName + "]";
    }

}
